Guild icon
wafer.space Community
ℹ️ - Information / general / featherlane-PEX
Between 2026-06-30 11:59 p.m. and 2026-08-01 12:00 a.m.
Avatar
the big one is up to "Extracting VSS" now.
Avatar
yeah so that's definitely not the linear solver I want to use with that behavior.... I think ?
1:25 a.m.
Avatar
Avatar
namibj
Click to see attachment 🖼️
@Tholin results
1:42 a.m.
If you have amendments to this file, now's the time, to get results before sleepy time.
Avatar
on second thought, I'm gonna take the scarce hours of cold to sleep sooner than later, not gonna be that long anyways, and afterwards the big circuit should maybe be done.
1:54 a.m.
(done extracting, that is)
Avatar
@Tholin errrrr, this got 87 mA?
5:20 p.m.
I wonder if its because the latches have initialized into a metastable state
5:21 p.m.
87 mA doesn’t feel like a short
5:22 p.m.
I wish I could simulate a few clock cycles
5:22 p.m.
The best thing I can suggest for a DC analysis is pulling clk_n high
Avatar
Avatar
Tholin
I wonder if its because the latches have initialized into a metastable state
it should be solving until they stabilize; I'm running with the other solver from earlier again to check though.
5:24 p.m.
Feel free to compare the voltages between the two .prn files to see if they may be meaningfully different.
Avatar
Avatar
Tholin
I wish I could simulate a few clock cycles
Feel free to edit this into a smol testbench for that; think about MINTIMESTEPSBP and the tolerance tunables please to dial in a minimum of actually to-be-taken timesteps that would still be expected to give meaningful results. A full nonlin solve there didn't take thaaaat long: ***** Solution Summary ***** Number Successful Steps Taken: 1 Number Failed Steps Attempted: 0 Number Jacobians Evaluated: 362 Number Linear Solves: 362 Number Failed Linear Solves: 0 Number Linear Solver Iterations: 70583 Number Residual Evaluations: 373 Number Nonlinear Convergence Failures: 0 Total Residual Load Time: 78.2002 seconds Total Jacobian Load Time: 61.0558 seconds Total Linear Solution Time: 1952.14 seconds ***** Total Simulation Solvers Run Time: 2152.39 seconds ***** Total Elapsed Run Time: 2247.1 seconds *****
Avatar
I’m not sure if there are any syntax differences with xyce
5:34 p.m.
But, in theory, all you need to do is update the beginning of the input stimulus section to *** 5. INPUT STIMULUS *** V_clk clk VSS PULSE( 0 3.3 0 0.1ns 0.1ns 50ns 200ns ) V_clk_n clk_n VSS PULSE( 0 3.3 100ns 0.1ns 0.1ns 50ns 200ns ) V_rst_n rst_n VSS PULSE( 0 3.3 375ns 0.1ns 0.1ns 5us 6us ) V_rst_override_n rst_override_n VSS PULSE( 0 3.3 375ns 0.1ns 0.1ns 5us 6us ) And then run that for a few clock cycles and observe the outputs. This is set up for a 5us long run.
5:35 p.m.
I tried this in ngspice and it just never even started
Avatar
Avatar
Tholin
I’m not sure if there are any syntax differences with xyce
feel free to check; notably btw. I've thought you might want to use .option timeint ERROPTION=1 to explicitly not use the classic SPICE "local truncation error", but instead just adjust step size based on how many newton (or whatever nonlinear solver was selected) iterations it took to turn the predictor's (the trapezoidal/backwards-euler/2nd-order-gear time integration forward-model) estimate of the solution variable's values (e.g. node voltages and a bunch of (internal) port currents) into a new solution that is newly compliant with all the non-linear device interaction models up to the configured tolerances (absolute, relative, and what the scale reference is for "relative"; sadly AFAIK there's no straight-forward way to distinguish between current and voltage quantities for that config option, which would be IMO fairly relevant for abstol as e.g. tolerance better than like a single millivolt is probably not required for this type of circuit if one wants to check against DOA and isn't trying to do fancy calibration stuff; also not to forget update-norm and unweighted l2-norm of the residual which are also tunables for deeming the nonlinear solve "sufficciently converged").
Avatar
Avatar
Tholin
But, in theory, all you need to do is update the beginning of the input stimulus section to *** 5. INPUT STIMULUS *** V_clk clk VSS PULSE( 0 3.3 0 0.1ns 0.1ns 50ns 200ns ) V_clk_n clk_n VSS PULSE( 0 3.3 100ns 0.1ns 0.1ns 50ns 200ns ) V_rst_n rst_n VSS PULSE( 0 3.3 375ns 0.1ns 0.1ns 5us 6us ) V_rst_override_n rst_override_n VSS PULSE( 0 3.3 375ns 0.1ns 0.1ns 5us 6us ) And then run that for a few clock cycles and observe the outputs. This is set up for a 5us long run.
I can mint you a rawfile that you can use with the xschem-integrated viewer. I'd suggest you take a single standard cell from your library, let me run it through the PEX extractor script, and let me hand you a starter-pack Xyce testbench for it (half machine-generated per your wishes as to the excitation pattern for it, but then substantially manually checked by me for not being broken and actually tested), if you want. Also, if you can generate me a .gds flattened as much as this and with no stray labels littered around, you are then allowed to have labels on internal nets of interest or I'd guess there would be some way from the LVS machinery to slap semantically meaningful labels on nets and/or devices. I'll see to get a .nodeset-based initial conditions dump next run which should make it much faster to jump in and test things.
Avatar
Hold on, I’m trying again with ngspice
8:04 p.m.
I flattened the layout in magic before extracting it, maybe that helps
Avatar
It did it!
8:24 p.m.
And oh man am I happy I tested this because there is a breaking bug in the RTL that I see now
Avatar
I also see the 87mA static current consumption. Not sure what’s up with that.
Avatar
I ran a simulation on a LibreLane generated layout. Less standard cells in it, but still had a ~9mA static current consumption.
9:26 p.m.
Possible that its an issue with my SCL? Or the 3.3V FETs have that much of a leakage current?
9:27 p.m.
Because it roughly scales up to the 87mA consumption by standard cell count
Avatar
Cursed spice deck just containing 3000 buff_16s with the input tied low seems to suggest leakage
9:52 p.m.
Whoa! what the hell? It freaks the hell out if I instantiate 4000 fillcap cells!
9:52 p.m.
I guess its the inrush?
9:52 p.m.
It crashed, btw
9:53 p.m.
It was supposed to run for much longer
9:54 p.m.
I also noticed that well tap cells extract into.... nothing. Like, empty spice file. So, what exactly is energizing the wells during these simulations, then?
Avatar
I don’t think I have the time to figure out why the static current consumption on my SCL is so high
10:16 p.m.
I’m just going to have to tape out and pray
Avatar
. The P() and W() wildcards are supported for analysis modes (TRAN and DC) that support power calculations.
YAY
Avatar
Not sure how to approach this. If it is one specific cell that is at fault, it might be somewhat difficult to find.
Avatar
Avatar
Tholin
I don’t think I have the time to figure out why the static current consumption on my SCL is so high
I'm back on the settings that did the fast results.
Avatar
I’m going to leave my computer running overnight to see if I can get a analysis done on a extract with parasitics
Avatar
Avatar
Tholin
Not sure how to approach this. If it is one specific cell that is at fault, it might be somewhat difficult to find.
Going by earlier processing speed, we should have info in about 30~40 minutes which extracted device(s) are to blame for the power dissipation.
10:48 p.m.
I'm not doing transient here btw.
Avatar
Avatar
Tholin
I’m going to leave my computer running overnight to see if I can get a analysis done on a extract with parasitics
Can you share the testbench spice?
Avatar
Avatar
Tholin
I ran a simulation on a LibreLane generated layout. Less standard cells in it, but still had a ~9mA static current consumption.
And/or that for this mentioned smaller/"more minimized" SCL-bug-reproducer?
Avatar
I just extracted with extract all;ext2sim labels on;ext2sim;extresist tolerance 10;extresist;ext2spice lvs;ext2spice cthresh 0;ext2spice extresist on;ext2spice;
10:53 p.m.
This seems to pull 7.5mA static
10:56 p.m.
Inputs low
Avatar
I decided to be funny and re-run the flow of secret_message with all logic cells disabled in my SCL except NAND and NOT
11:20 p.m.
And that made it WORSE
11:20 p.m.
7.5mA static to 12mA static
11:20 p.m.
Corresponding roughly to the increase in the number of transistors
11:20 p.m.
This feels like leakage
Avatar
Avatar
Tholin
This feels like leakage
I mean, I guess?
11:22 p.m.
And if that's the case, this sounds like runaway self-heating waiting to happen.
Avatar
As I said, I’m going to have to just tape out and hope
Avatar
re-running with the other possibly-easier-to-digest print formats active for the power print line
11:23 p.m.
(using the initial conditions file created)
Avatar
I did an extraction with resistors and it now idles at 1.9mA instead of 12mA
Avatar
Avatar
Tholin
I did an extraction with resistors and it now idles at 1.9mA instead of 12mA
"with resistors"? as opposed to including capacitors, or what?
1:04 a.m.
one of the "powers" should be fairly easy to wrangle into a comfy table
Avatar
Oh, I’ve been doing only transistors so far
Avatar
oh, I've been doing full PEX
1:07 a.m.
***** Device Count Summary ... C level 1 (Capacitor) 280984 D level 1,2 (Diode) 9694 M level 14 (BSIM4) 44848 R level 1 (Resistor) 267528 V level 1 (Independent Voltage Source) 22 --------------------------------------------- Total Devices 603076 ***** Setting up matrix structure... ***** Number of Unknowns = 292543 ***** Initializing... Analyzed Singleton Problem: --------------------------- Singletons Detected! Num Singletons: 44 --------------------------- ConstructedSingleton Problem: --------------------------- RatioOfDimensions: 0.99985 RatioOfNonzeros: 0.765899 --------------------------- ZOLTAN Load balancing method = 10 (HYPERGRAPH) ***** Solution Summary ***** Number Successful Steps Taken: 1 Number Failed Steps Attempted: 0 Number Jacobians Evaluated: 558 Number Linear Solves: 558 Number Failed Linear Solves: 0 Number Linear Solver Iterations: 69386 Number Residual Evaluations: 571 Number Nonlinear Convergence Failures: 0 Total Residual Load Time: 103.587 seconds Total Jacobian Load Time: 104.901 seconds Total Linear Solution Time: 2080.07 seconds ***** Total Simulation Solvers Run Time: 2370.69 seconds ***** Total Elapsed Run Time: 2547.76 seconds ***** ***** End of Xyce(TM) Simulation *****
1:08 a.m.
(turns out, loading from .nodeset's doesn't make it faster; it takes almost twice as long instead... maybe only +50% time)
Avatar
According to the PDK docs, the 3.3V PFETs have twice the subthreshold current than 5V PFETs. And the NFETs have 10 times the subthreshold current!
11:22 a.m.
So they seem to leak a lot more...
Avatar
I put together a spice bench that is just 256 buff_4 cells back-to-back and a pulse signal source that is low for 500ns, then goes high and stays there for 11us and good lord what is happening in there?
Avatar
Avatar
Tholin
I put together a spice bench that is just 256 buff_4 cells back-to-back and a pulse signal source that is low for 500ns, then goes high and stays there for 11us and good lord what is happening in there?
Share; I wanna feed it to Xyce.
7:29 p.m.
(in a couple hours tho; I'm not home rn)
Avatar
Avatar
Tholin
So they seem to leak a lot more...
Have you tried/considered longer channels? Are any of the _dss construction perhaps able to squeeze into at least some of your cells and perhaps be less-leaky?
7:33 p.m.
....and/or could it be that this is better run with VDD << 3.3V assuming it's indeed due to DIBL?
Avatar
Avatar
namibj
Here ya go!
@Tholin ...... I know I know, "AI bad", etc.; but I didn't spend substantial time promoting here, and these numbers look seriously sus to me with less and rg as well.... Would be great if you could by chance confirm this clock "phasing" to be liable for severe power draw. And if you'd perhaps be so kind as to make us a _v5.xyce by adjusting the inputs, I'd even fast-track that through Xyce over Mosh (remote shell). https://chatgpt.com/s/t_6a5543dabbc88191a1d7f6b3f8919000 (edited)
Jemand dachte, dieser Chat wäre was für dich.
Avatar
.... https://chatgpt.com/s/t_6a554c25a3288191b3b16d66ef7800db Why do you have hundreds of diode-connected NMOS.....
Jemand dachte, dieser Chat wäre was für dich.
8:40 p.m.
Like I know they have some purposes but I don't think they have any reason to exist in that netlist....
Avatar
You mean the antenna diodes?
Avatar
Avatar
Tholin
You mean the antenna diodes?
Those shouldn't involve poly2 on comp, though?
Avatar
Oh, its probably seeing the decoupling capacitors
Avatar
Avatar
Tholin
Oh, its probably seeing the decoupling capacitors
those account for on the order of 80% of the current draw
9:28 p.m.
I've got it to fix me up an evolved extractor script that is supposed to spit out coordinates mapped to the identifiers in SPICE; if the spice identifiers remained the same I likely have "coordinates of blame" in a couple minutes; if not it'll take about an hour from now to repeat all the analysis processing to find the offenders again.
Avatar
This is the decap cell. It uses the gate capacitance of two FETs as a decoupling capacitor.
Avatar
Avatar
Tholin
This is the decap cell. It uses the gate capacitance of two FETs as a decoupling capacitor.
Yeah that looks fine. I'll know soon.
Avatar
Check the net at x 48500 y 3484 (database units) for mcpu32; there should be a w/l 1.0/0.28 nfet with one diffusion to VSS and the other diffusion somehow resistance-extraction tied to it's gate.
Avatar
Net tracing suggests the voltage is supplied by three pfet fingers of w/l: 1.38/0.28 who's gates are driven by din[15].
Avatar
Avatar
Tholin
Click to see attachment 🖼️
?
Avatar
That’s the area in question, roughly
10:37 p.m.
Its in that cell somewhere
10:37 p.m.
Its one of the input buffers
Avatar
Avatar
Tholin
Its in that cell somewhere
Look what pfet gates din[15] connects to.
Avatar
That would be these
Avatar
The drains if them, just so simple "trace single net", and it should highlight you (not only, maybe, but certainly not missing) the diode-connected nfet as that very nfet gate is tied to those pfet drains.
10:40 p.m.
10:40 p.m.
Be back in 5 minutes!
Avatar
Avatar
Tholin
That would be these
Can you look at my annotated screenshot/excerpt of this image and explain?
Avatar
Avatar
Tholin
OH NO!
Well the current doesn't come from that VSS, it comes from the 3 pfet's.
Avatar
Same loop exists on both sides
Avatar
You have spice based timing extraction for your SCL set up, right?
Avatar
Avatar
Tholin
Same loop exists on both sides
Yeah that's even worse 😄
Avatar
Speedrunning a fix. Will go dark while I lock the fuck in.
Avatar
Avatar
namibj
You have spice based timing extraction for your SCL set up, right?
Could you amend the configured measurements to include supply current, and flag anything that smells like more than subthreshold leakage during any of the "static" moments during the stimuli?
10:57 p.m.
If you lack compute, hand me a self contained nix runner.
Avatar
Avatar
Tholin
I decided to be funny and re-run the flow of secret_message with all logic cells disabled in my SCL except NAND and NOT
You mentioned suspicious behavior for NAND and NOT . This is highly concerning.
Avatar
I'm a little surprised/confused your nand4_2 wires the nmos intermediate nets around instead of doing what the 7-track foundry 5V nand4_2 did (a 4-finger nmos with no contacts etween fingers on the left, one on the right, and alternating between VDD contacts and output-m1-collector-snake-contacts on the pmos side. https://gf180mcu-pdk.readthedocs.io/en/latest/digital/standard_cells/gf180mcu_fd_sc_mcu7t5v0/cells/nand4/gf180mcu_fd_sc_mcu7t5v0__nand4_2.html (edited)
Avatar
Avatar
Tholin
Speedrunning a fix. Will go dark while I lock the fuck in.
Don't forget clkbuf_8!
Avatar
I didn’t
Avatar
Well this is exciting. Good find! Was it just the (clk)buff_8? Have you checked that the simulated power consumption is normal on a large design with this fixed?
Avatar
I still get a few mA of static power consumption that oscillates up and down, but I even get that with the fab 5V SCL. Possible extraction or simulation issue?
Avatar
Cool, I’ll get my designs rebuilt when I get a chance!
11:47 a.m.
I probably should have tried a spice sim with my designs. As ever I’ve been a bit split between lots of different projects
Exported 113 message(s)
Timezone: UTC+0